package top.kuxiao.crmserver.utils;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
public class ResultUtil {

    private ResultType type;  // 结果类型
    private String msg; // 消息
    private List<Object> data; // 数据列表

    /**
     * 生成一个 结果类型为FAIL 消息为"" 数据为null 的返回结果集
     */
    public ResultUtil() {
        this.type = ResultType.FAIL;
        this.msg = "";
        this.data = null;
    }

    /**
     * 生成一个 结果类型为OK 消息为"" 数据为data 的返回结果集
     * @param data 返回结果中的数据列表
     * @return 结果集
     */
    public static ResultUtil resList(List data){
        ResultUtil res = new ResultUtil();
        res.setType(ResultType.OK);
        res.setData(data);
        return res;
    }

    /**
     * 生成一个 结果类型为OK 消息为"" 数据为data 的返回结果集
     * @param data 返回结果中的数据列表
     * @return 结果集
     */
    public static ResultUtil resObj(Object data){
        ArrayList list = new ArrayList();
        list.add(data);
        return resList(list);
    }

    /**
     * 生成一个 结果类型为type 消息为msg 数据为null 的返回结果集
     * @param type 结果类型
     * @param msg 消息
     * @return 结果集
     */
    public static ResultUtil resMsg(ResultType type, String msg){
        ResultUtil res = new ResultUtil();
        res.setType(type);
        res.setMsg(msg);
        return res;
    }

    /**
     * 生成一个 结果类型为OK 消息为msg 数据为null 的返回结果集
     * @param msg 消息
     * @return 结果集
     */
    public static ResultUtil resMsgOK(String msg){
        return resMsg(ResultType.OK, msg);
    }

    /**
     * 生成一个 结果类型为ERROR 消息为msg 数据为null 的返回结果集
     * @param msg 消息
     * @return 结果集
     */
    public static ResultUtil resMsgError(String msg){
        return resMsg(ResultType.ERROR, msg);
    }

    /**
     * 结果类型枚举
     */
    public enum ResultType{
        /**
         * 正常执行
         */
        OK,
        /**
         * 出现错误
         */
        ERROR,
        /**
         * 执行失败\执行取消\执行未定义
         */
        FAIL
    }

}
